package com.dkd.day20250705;

import java.util.Scanner;

public class Main2 {
    //存在一个m*n的二维数组，其成员取值范围为0，1，2。
    //
    //其中值为1的元素具备同化特性，每经过1S，将上下左右值为0的元素同化为1。
    //
    //而值为2的元素，免疫同化。
    //
    //将数组所有成员随机初始化为0或2，再将矩阵的[0, 0]元素修改成1，在经过足够长的时间后求矩阵中有多少个元素是0或2（即0和2数量之和）。
    //广度优先遍历
    static int number = 0;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        int n = sc.nextInt();
        int[][]  martix = new int[m][n];
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                martix[i][j] = sc.nextInt();
            }
        }

        solve(0,0,martix);
        System.out.println(m*n-number);
    }


    public static void solve(int i, int j, int[][] martix) {
        //往4个方向遍历;
        martix[i][j] = 1;
        number++;
        if(i-1 >= 0 && martix[i-1][j] == 0){
            solve(i-1, j, martix);
        }
        if(i+1 < martix.length && martix[i+1][j] == 0){
            solve(i+1, j, martix);
        }
        if(j-1 >= 0 && martix[i][j-1] == 0){
            solve(i, j-1, martix);
        }
        if(j+1 < martix[0].length && martix[i][j+1] == 0){
            solve(i, j+1, martix);
        }
    }
}
